.\" Licensed under the OpenIB.org BSD license (FreeBSD Variant) - See COPYING.md
.TH SRP_DAEMON 8 "September 5, 2006" "OpenFabrics" "USER COMMANDS"

.SH NAME
srp_daemon \- Discovers SRP targets in an InfiniBand Fabric

.SH SYNOPSIS
.B srp_daemon\fR [\fB-vVcaeon\fR] [\fB-d \fIumad-device\fR | \fB-i \fIinfiniband-device\fR [\fB-p \fIport-num\fR] | \fB-j \fIdev:port\fR] [\fB-t \fItimeout(ms)\fR] [\fB-r \fIretries\fR] [\fB-R \fIrescan-time\fR] [\fB-f \fIrules-file\fR]


.SH DESCRIPTION
.PP
Discovers and connects to InfiniBand SCSI RDMA Protocol (SRP) targets in an IB fabric.

Each srp_daemon instance operates on one local port. Upon boot it performs a
full rescan of the fabric and then waits for an srp_daemon event. An
srp_daemon event can be a join of a new machine to the fabric, a change in the
capabilities of a machine, an SA change, or an expiration of a predefined
timeout.

When a new machine joins the fabric, srp_daemon checks if it is an SRP
target. When there is a change of capabilities, srp_daemon checks if the
machine has turned into an SRP target. When there is an SA change or a timeout
expiration, srp_daemon performs a full rescan of the fabric.

For each target srp_daemon finds, it checks if it should connect to this
target according to its rules (the default rules file is
@CMAKE_INSTALL_FULL_SYSCONFDIR@/srp_daemon.conf) and if it is already
connected to the local port. If it should connect to this target and if it is
not connected yet, srp_daemon can either print the target details or connect
to it.

.SH OPTIONS

.PP
.TP
\fB\-v\fR
Print more verbose output
.TP
\fB\-V\fR
Print even more verbose output (debug mode)
.TP
\fB\-i\fR \fIinfiniband-device\fR
Work on \fIinfiniband-device\fR. This option should not be used with -d nor
with -j.
.TP
\fB\-p\fR \fIport-num\fR
Work on port \fIport-num\fR (default 1). This option must be used with -i and
should not be used with -d nor with -j.
.TP
\fB\-j\fR \fIdev:port\fR
Work on port number \fIport\fR of InfiniBand device \fIdev\fR. This option
should not be used with -d, -i nor with -p.
.TP
\fB\-d\fR \fIumad-device\fR
Use device file \fIumad-device\fR (default /dev/infiniband/umad0) This option
should not be used with -i, -p nor with -j.
.TP
\fB\-c\fR
Generate output suitable for piping directly to a
/sys/class/infiniband_srp/srp\-<device>\-<port>/add_target file. 
.TP
\fB\-a\fR
Prints all the targets in the fabric, not only targets that are not connected
through the local port. This is the same behavior as that of ibsrpdm.
.TP
\fB\-e\fR
Execute the connection command, i.e., make the connection to the target.
.TP
\fB\-o\fR
Perform only one rescan and exit just like ibsrpdm.
.TP
\fB\-R\fR \fIrescan-time\fR
Force a complete rescan every \fIrescan-time\fR seconds. If -R is not specified, no timeout rescans will be performed.
.TP
\fB\-T\fR \fIretry-timeout\fR
Retries to connect to existing target after \fIretry-timeout\fR seconds. If -R is not specified, uses 5 Seconds timeout. if retry-timeout is 0, will not try to reconnect. The reason srp_daemon retries to connect to the target is because there may be a rare scnerio in which srp_daemon will try to connect to add a target when the target is about to be removed, but is not removed yet.
.TP
\fB\-f\fR \fIrules-file\fR
Decide to which targets to connect according to the rules in \fIrules-file\fR.
If \fB\-f\fR is not specified, uses the default rules file @CMAKE_INSTALL_FULL_SYSCONFDIR@/srp_daemon.conf.
Each line in the \fIrules-file\fR is a rule which can be either an allow connection or a disallow connection according to
the first character in the line (a or d accordingly). The rest of the line is values for id_ext, ioc_guid, dgid, 
service_id. Please take a look at the example section for an example of the file. srp_daemon decide whether to allow or disallow each target according  to first rule that match the target. If no rule matches the target, the target is allowed and will be connected. In an allow rule it is possible to set attributes for the connection to the target. Supported attributes are max_cmd_per_lun and max_sect.
.TP
\fB\-t\fR \fItimeout\fR
Use timeout of \fItimeout\fR msec for MAD responses (default: 5 sec).
.TP
\fB\-r\fR \fIretries\fR
Perform \fIretries\fR retries on each send to MAD (default: 3 retries).
.TP
\fB\-n\fR
New format - use also initiator_ext in the connection command.
.TP
\fB\--systemd\fR
Enable systemd integration.

.SH FILES
@CMAKE_INSTALL_FULL_SYSCONFDIR@/srp_daemon.conf -
Default rules configuration file that indicates to which targets to connect. Can be overridden using the \fB\-f\fR \fIrules-file\fR option.
Each line in this file is a rule which can be either an allow connection or a disallow connection according to 
the first character in the line (a or d accordingly). The rest of the line is values for id_ext, ioc_guid, dgid, 
service_id. Please take a look at the example section for an example of the file. srp_daemon decide whether to allow or disallow each target according  to first rule that match the target. If no rule matches the target, the target is allowed and will be connected. In an allow rule it is possible to set attributes for the connection to the target. Supported attributes are max_cmd_per_lun and max_sect.

.SH EXAMPLES
srp_daemon -e -i mthca0 -p 1 -R 60 (Connects to the targets accessible through port 1 of mthca0. Performs a complete rescan every minute)

srp_daemon -o -c -a		    (Prints the connection commands for the targets in the fabric and exits - similar to ibsrpdm)

srp_daemon -e -f rules.txt	    (Connects to the targets allowed in the rules file rules.txt)

.nf
An example for a rules configuration file (such as @CMAKE_INSTALL_FULL_SYSCONFDIR@/srp_daemon.conf)
------------------------------------------------------------------------
# Rules file example
# This is a comment
# disallow the following dgid
d       dgid=fe800000000000000002c90200402bd5
# allow target with the following ioc_guid
a       ioc_guid=00a0b80200402bd7
# allow target with the following id_ext and ioc_guid. And setting max_cmd_per_lun to 31.
a       id_ext=200500A0B81146A1,ioc_guid=00a0b80200402bef,max_cmd_per_lun=31
# disallow all the rest
d
.fi


.SH SEE ALSO
.BR ibsrpdm (8)

.SH AUTHORS
.TP
Roland Dreier
.RI < rolandd@cisco.com >
.TP
Ishai Rabinovitz
.RI < ishai@mellanox.co.il >
